const mongoose = require('mongoose');
const config = require('../config/config.default');

class Database {
  constructor() {
    this._connect();
  }

  _connect() {
    mongoose.connect(config.MONGODB_URI)
      .then(() => {
        console.log('MongoDB连接成功');
      })
      .catch(err => {
        console.error('MongoDB连接失败:', err);
        // 如果是开发环境，立即退出进程
        if (process.env.NODE_ENV === 'development') {
          process.exit(1);
        }
      });

    // 监听数据库连接事件
    mongoose.connection.on('error', err => {
      console.error('MongoDB连接错误:', err);
    });

    mongoose.connection.on('disconnected', () => {
      console.warn('MongoDB连接断开，尝试重新连接...');
      this._connect();
    });

    // 如果Node进程结束，关闭数据库连接
    process.on('SIGINT', () => {
      mongoose.connection.close()
        .then(() => {
          console.log('MongoDB连接已关闭');
          process.exit(0);
        })
        .catch(err => {
          console.error('关闭连接时出错:', err);
          process.exit(1);
        });
    });
  }
}

// 导出数据库实例
module.exports = new Database(); 